<!DOCTYPE html>
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>
<script src='../../resources/gesture-util.js'></script>
<style>
  body {
    margin: 0;
  }

  #overflow {
    border:2px solid black;
    overflow:auto;
    white-space:nowrap;
    height:200px;
    width:200px;
  }

  #container {
    height: 185px;
    width: 600px;
  }

  .box {
    height:181px;
    width:300px;
    display:inline-block;
  }
</style>

<div id="overflow">
  <div id="container">
    <div class="box" style="background-color:red"></div>
    <div class="box" style="background-color:green"></div>
  </div>
</div>

<script>
    const scrollDelta = 2;
    var last_event = null;
    var source = GestureSourceType.MOUSE_INPUT;
    const numTicksY = scrollDelta / pixelsPerTick();
    const expectedWheelDeltaY = numTicksY * LEGACY_MOUSE_WHEEL_TICK_MULTIPLIER;

    function mousewheelHandler(e)
    {
        last_event = e;
    }

    promise_test(async () => {
      const overflowElement = document.getElementById("overflow");
      overflowElement.addEventListener("mousewheel", mousewheelHandler, false);

      await smoothScroll(scrollDelta, 100, 110, source, 'down', SPEED_INSTANT, false /* precise_scrolling_deltas */, true /* scroll_by_page */);
      await conditionHolds( () => {
          return overflowElement.scrollTop == 0;
      });
      assert_equals(last_event.wheelDeltaY, -Math.floor(expectedWheelDeltaY));
      assert_equals(last_event.wheelDeltaX, 0);
      assert_equals(last_event.wheelDelta, -Math.floor(expectedWheelDeltaY));
    }, "Page-based wheel scrolls provide correct delta in event handler, don't scroll if there's no " +
       "overflow in direction when scrolling on div.");
</script>
